#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
    umask(0);
    int fd = open("log.txt", O_RDONLY);
    if (fd < 0)
    {
        perror("open");
        exit(1);
    }

    // 打开成功
    printf("fd: %d\n", fd); 

    char buffer[64];
    memset(buffer, '\0', sizeof (buffer));
    read(fd, buffer, sizeof (buffer));
    printf("%s\n", buffer);

    close(fd); 
   
    return 0;
}


//int main()
//{
//    umask(0);
//    // int fd = open("log.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
//    int fd = open("log.txt", O_RDONLY);
//    if (fd < 0)
//    {
//        perror("open");
//        exit(1);
//    }
//
//    // 打开成功
//    printf("fd: %d\n", fd); 
//
//    char buffer[64];
//
//    // const char* s = " I am write\n";
//    // write(fd, s, strlen(s)); // 这里也不要+1
//
//
//    close(fd); 
//   
//    return 0;
//}

//int main(int argc, char* argv[])
//{
//    if (argc != 2)
//    {
//        printf("请输入两个参数：程序+文件名\n");
//        exit(1);
//    }
//    FILE* fp = fopen(argv[1], "r");
//    if (fp == NULL)
//    {
//        perror("fopen");
//        return 1;
//    }
//    // 文件操作
//
//    char line[64];// 缓冲区
//    // fgets是C语言的接口，按行读取，自动在字符结尾添加\0
//    while (fgets(line, sizeof(line), fp) != NULL)
//    {
//        fprintf(stdout, "%s", line);
//    }
//
//    // const char* s1 = "fwrite\n";
//    // fwrite(s1, strlen(s1), 1, fp); // 这里注意，不要把s1的\0加上，因为那是c语言的规定，文件要保存有效数据
//
//    fclose(fp);
//
//    return 0;
//}
